#pragma once

#include "INode.h"
#include "Trigger.h"
#include "Matrix.h"
#include "Quaternion.h"

class TransformationNode : public INode
{
public:
	TransformationNode( Subject<Maths::Vector3D>* position = 0, Subject<Maths::Quaternion>* rotation = 0 );
	virtual ~TransformationNode();

	HashedString Type() const;
	void Enable();
	void Disable();
	bool ToXML( tinyxml2::XMLPrinter& printer );
	Pointer<TriggerBase>& getPosition();
	Pointer<TriggerBase>& getRotation();
	void setPosition( Maths::Vector3D& position );
	void setRotation( Maths::Quaternion& rotation );
	Maths::Matrix getMatrix();
protected:
	Pointer<TriggerBase> m_rotation;
	Pointer<TriggerBase> m_position;
};